 using UnityEngine;
using System.Collections;

public class Gema : MonoBehaviour {
	
   //enumeracion para comprobar el tipo de gema
	public enum TipoGema{
		Ninguno = 0,
		Verde = 1,
		Naranja = 2,
		Amarilla = 3,
		Lila = 4,
		Azul = 5,
		AzulClaro = 6,
		Rojo = 7,
		Gris = 8	
	}
	
   //tipo de gema actual
	public TipoGema Tipo;  
   //esta seleccionada ?
	public bool Seleccionada{
		get { return seleccionada; }
		set { 
			if (value == true)
				transform.GetChild(0).transform.renderer.material.SetColor("_OutlineColor", Color.white);
			else
				transform.GetChild(0).transform.renderer.material.SetColor("_OutlineColor", Color.black);
			
			seleccionada = value;
		}
		
	}
	private bool seleccionada = false;
	
	/*public bool Iniciada{
		get { return iniciada; }
		set { iniciada = value; }		
	}*/	
	
   //esta iniciada ?
	public bool Iniciada;
   //columna actual
	public int columna;
   //fila actual
	public int fila;
   //Raycasthit ( necesario ? tengo que comprobarlo )
	RaycastHit hit;
	
	
	// Use this for initialization
	void Start () {
	
		//Tipo = TipoGema.Ninguno;		
		
	}
	
	public void IniciarGema(int tipo, int col, int fi){
	
		Tipo = (TipoGema)tipo;
		columna = col;
		fila = fi;
		Iniciada = false;
		StartCoroutine("Comprobar");
	}
	
	// Update is called once per frame
	void Update () {			
		
		
	}
	
   //Autocomprobar la gema cada 0.05 segs
	IEnumerator Comprobar()
	{
		for (;;){
			ComprobarGema();
			yield return new WaitForSeconds(0.05f);
		}		
	}
	
   //Comprueba la gema, le cambia el color, y desactiva la gravedad cuando el cuerpo rigido (rigidbody) activa su modo IsSleeping()
	void ComprobarGema(){
		
		if (Iniciada == false)
		{
			transform.GetChild(0).transform.renderer.material.SetColor("_Color", new Color(0.2f, 0.2f, 0.2f, 1f));
			if (transform.GetChild(0).rigidbody.IsSleeping())
			{
				CambiarGravedad(false);		
				Iniciada = true;				
				transform.GetChild(0).transform.renderer.material.SetColor("_Color", new Color(0.5f, 0.5f, 0.5f, 1f));
			}
		}		
	}
	//Cambiar la gravedad para que las gemas caigan
	public IEnumerator CambiarGravedad(bool gravedad)
	{
		yield return new WaitForSeconds(0.5f);
		transform.GetChild(0).transform.rigidbody.useGravity = gravedad;
		transform.GetChild(0).transform.rigidbody.isKinematic = !gravedad;
		if (!gravedad)
			transform.GetChild(0).transform.rigidbody.Sleep();
	}	
	
   //Cambiar borde del shader para marcarla o desmarcarla (seleccionada o no, otros...)
	public void CambiarColorBorde(Color color){
	
		transform.GetChild(0).transform.renderer.material.SetColor("_OutlineColor", color);
		
	}	
}
